import axios from 'axios';
import { ElMessage } from 'element-plus'

//运行时配置
const config = useRuntimeConfig();
let baseURL = config.public.apiBase;

// 创建axios实例
const requester = axios.create({
  //设置基础路径
  baseURL: baseURL,
  // 请求超时时间
  timeout: 0
})

// http request 拦截器
requester.interceptors.request.use(
  config => {
    // 发送请求前的处理
    // 这里可以处理 token
    let store = useMyStore();
    const token = store.token||'';
    config.headers['Authorization'] = `${token}`;
    return config
  },
  err => {
    // 请求错误的处理
    return Promise.reject(err)
  }
)

// http response 拦截器
requester.interceptors.response.use(
  //处理响应数据
  response => {
    // //判断请求是否正常
    if (response.status !== 200) {
      //出现错误,错误处理,提示错误信息
      return Promise.reject(response.data)
    } else {
      let data = response.data
      if (data.errorCode == '3') {
        const store = useMyStore();
        store.logout();
        //navigateTo("/login");
      } else if (data.errorCode != '0') {
        ElMessage.error(data.message)
        return Promise.reject(response.data)
      } else {
        //成功返回数据
        return response.data
      }
    }
  },
  // 抛出错误
  error => {
    // if(error.response.status === 413){
    //   ElMessage.error('文件大小超出限制')
    // }
    return Promise.reject(error.response)
  }
)

export const useApi = {
  get: (url: string) => {
    url = url.replace('/api/', '/')
    return requester({ url: url, method: 'get' });
  },

  post: (url: string, params?: any, config?: any) => {
    url = url.replace('/api/', '/')
    return requester({
      url: url,
      method: 'post',
      data: params,
      config: config || {}
    });
  },
};